var axios = require('axios');
const ffmpeg = require('fluent-ffmpeg');
const path = require('path');
const fs = require('fs');
function check_rtsp_stream(rtsp) {
  return new Promise((resolve, reject) => {
    try {
      let is_play = false;
      let command = ffmpeg()
        .input(rtsp)
        .inputOptions("-stimeout 5000000")
        .inputOptions("-rtmp_transport tcp")
        .noAudio()
        .videoCodec("copy")
        .on("start", () => {
          console.log("begin start...");
        })
        .on("codecData", () => {
          console.log("codec data....");
          is_play = true;
          command.kill();
          resolve(true);
        })
        .on("error", (err) => {
          if (!is_play) {
            resolve(false);
          }
        })
        .format("avi")
        .save('./test.avi');
    } catch (error) {
      this.error_log('---check rtsp stream failed---', error);
      resolve(false);
    }
  });
}

function get_camera_snapshot(rtsp) {
  return new Promise((resolve, reject) => {
    try {
      let chunks = [];
      let size = 0;
      let proc = ffmpeg(rtsp)
        .withFrames(1)
        // .inputOptions("-stimeout 5000000")
        // .inputOptions("-rtmp_transport tcp")
        .noAudio()
        .format('mjpeg')
        .on('end', async function () {
          let data = Buffer.concat(chunks, size);
          let base64_img = data.toString('base64');
          resolve({
            camera_rtsp: rtsp,
            image_data: base64_img
          });
        })
        .on('error', function (err) {
          console.log('an error happened on get_camera_snapshot:' + err.message);
          resolve(false);
        })
      let ffstream = proc.pipe();
      ffstream.on('data', function (chunk) {
        chunks.push(chunk);
        size += chunk.length;
      });
    } catch (error) {
      console.log('---get camera snapshot failed---', error);
      resolve(false);
    }
  })
}


const AK = "UCxEdUcXLPUF8tLNdkQrXEJX"
const SK = "X2Kq3NhE0TydWF0b6yKJtBhq0NPOnbqj"

async function main(base64Screenshot) {
  var options = {
    'method': 'POST',
    'url': 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body_attr?access_token=' + await getAccessToken(),
    'headers': {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Accept': 'application/json'
    },
    data: {
      'image': base64Screenshot
    }
  };

  axios(options)
    .then(response => {
      console.log('==================', response.data, '==================');


    })
    .catch(error => {
      throw new Error(error);
    })
}

/**
 * 使用 AK，SK 生成鉴权签名（Access Token）
 * @return string 鉴权签名信息（Access Token）
 */
function getAccessToken() {

  let options = {
    'method': 'POST',
    'url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + AK + '&client_secret=' + SK,
  }
  return new Promise((resolve, reject) => {
    axios(options)
      .then(res => {
        resolve(res.data.access_token)
      })
      .catch(error => {
        reject(error)
      })
  })
}


module.exports = {
  schedule: {
    interval: '10s', // 1 分钟间隔
    type: 'all', // 指定所有的 worker 都需要执行
  },

  async task(ctx) {
    // 设置截图保存的临时文件路径
    // var tempScreenshotPath = path.join(__dirname, 'screenshot.png');
    // fs.readFile(tempScreenshotPath, (err, data) => {
    //   if (err) {
    //     console.error('Error reading the file: ', err);
    //     return;
    //   }
    //   const base64Screenshot = data.toString('base64');
    //   main(base64Screenshot)

    //   // console.log('Base64 Screenshot: ', base64Screenshot);

    //   // 删除临时文件
    //   // fs.unlink(tempScreenshotPath, (unlinkErr) => {
    //   //   if (unlinkErr) {
    //   //     console.error('Error deleting the file: ', unlinkErr);
    //   //   }
    //   // });


    //   // 调用百度ai

    // });

    // axios.post('https://open.ys7.com/api/lapp/v2/live/address/get', {
    //   deviceSerial: 'BC3032304',
    //   accessToken: 'at.55nitsymcbk8gias07dpbjvq3i2g78ic-3nrm6cn9jx-0hujzt9-0otci6w0q',
    //   protocol: '3'
    // }, {
    //   headers: { "content-type": "application/x-www-form-urlencoded" },
    // }).then(res => {
    //   // 设置RTMP流地址
    //   var rtmpStreamUrl = res.data.data.url;
    //   ffmpeg(rtmpStreamUrl)
    //     .outputFormat('image2') // 设定输出格式为图片
    //     .output(tempScreenshotPath) // 输出到文件
    //     .on('error', (err) => {
    //       console.error('Error: ', err.message);
    //     })
    //     .on('end', async () => {
    //       // 读取截图文件并转换为Base64
    //       console.log('Base64 Screenshot: ');
    //     })
    //     .screenshots({
    //       count: 1, // 截图数量
    //       timemarks: [0], // 截图时间点，例如0秒处
    //       filename: 'screenshot.png', // 截图文件名
    //       folder: '/', // 截图保存文件夹
    //     })
    //     .run();
    // })
  }
};